home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / mac / files / t_sys5 / unixcpio.gz / unixnet.cpio / lapb.h < prev    next >
C/C++ Source or Header  |  1994-07-11  |  3KB  |  83 lines

  1. /* Upper sub-layer (LAPB) definitions */
  2.  
  3. /* Control field templates */
  4. #define    I    0x00    /* Information frames */
  5. #define    S    0x01    /* Supervisory frames */
  6. #define    RR    0x01    /* Receiver ready */
  7. #define    RNR    0x05    /* Receiver not ready */
  8. #define    REJ    0x09    /* Reject */
  9. #define    U    0x03    /* Unnumbered frames */
  10. #define    SABM    0x2f    /* Set Asynchronous Balanced Mode */
  11. #define    DISC    0x43    /* Disconnect */
  12. #define    DM    0x0f    /* Disconnected mode */
  13. #define    UA    0x63    /* Unnumbered acknowledge */
  14. #define    FRMR    0x87    /* Frame reject */
  15. #define    UI    0x03    /* Unnumbered information */
  16. #define    PF    0x10    /* Poll/final bit */
  17.  
  18. #define    MMASK    7    /* Mask for modulo-8 sequence numbers */
  19.  
  20. /* FRMR reason bits */
  21. #define    W    1    /* Invalid control field */
  22. #define    X    2    /* Unallowed I-field */
  23. #define    Y    4    /* Too-long I-field */
  24. #define    Z    8    /* Invalid sequence number */
  25.  
  26. /* Per-connection link control block
  27.  * These are created and destroyed dynamically,
  28.  * and are indexed through a hash table.
  29.  * One exists for each logical AX.25 Level 2 connection
  30.  */
  31. struct ax25_cb {
  32.     struct ax25_cb *next;        /* Doubly linked list pointers */
  33.     struct ax25_cb *prev;
  34.  
  35.     struct mbuf *txq;        /* Transmit queue */
  36.     struct mbuf *rxasm;        /* Receive reassembly buffer */
  37.     struct mbuf *rxq;        /* Receive queue */
  38.  
  39.     struct ax25 addr;        /* Address header */
  40.  
  41.     struct interface *interface;    /* Associated interface */
  42.  
  43.     char rejsent;            /* REJ frame has been sent */
  44.     char remotebusy;        /* Remote sent RNR */
  45.     char response;            /* Response owed to other end */
  46.  
  47.     char vs;            /* Our send state variable */
  48.     char vr;            /* Our receive state variable */
  49.     char unack;            /* Number of unacked frames */
  50.     int maxframe;            /* Transmit flow control level */
  51.     int16 paclen;            /* Maximum outbound packet size */
  52.     int16 window;            /* Local flow control limit */
  53.     char proto;            /* Protocol version */
  54. #define    V1    1            /* AX.25 Version 1 */
  55. #define    V2    2            /* AX.25 Version 2 */
  56.     int16    pthresh;        /* Poll threshold */
  57.     unsigned retries;        /* Retry counter */
  58.     unsigned n2;            /* Retry limit */
  59.     int state;            /* Link state */
  60. #define    DISCONNECTED    0
  61. #define    SETUP        1
  62. #define    DISCPENDING    2
  63. #define    CONNECTED    3
  64. #define    RECOVERY    4
  65. #define    FRAMEREJECT    5
  66.     char frmrinfo[3];        /* I-field for FRMR message */
  67.     struct timer t1;        /* Retry timer */
  68.     struct timer t2;        /* Acknowledgement delay timer */
  69.     struct timer t3;        /* Keep-alive poll timer */
  70.  
  71.     void (*r_upcall)();        /* Receiver upcall */
  72.     void (*t_upcall)();        /* Transmit upcall */
  73.     void (*s_upcall)();        /* State change upcall */
  74.     char *user;            /* User pointer */
  75. };
  76. #define    NULLAX25    ((struct ax25_cb *)0)
  77. extern struct ax25_cb ax25default;
  78. extern struct ax25_cb *ax25_cb[];
  79. #define    NHASH    17
  80.  
  81. #define    YES    1
  82. #define    NO    0
  83.